﻿using ByBikeShop.Site;
using PersistenceLayer.DAL;
using SupportLayer.Constantes;
using SupportLayer.Constantes.CLIENTE;
using SupportLayer.Constantes.OUTROS;
using SupportLayer.Enums;
using SupportLayer.Objetos.Cliente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Util;

namespace ByBikeShop.Cliente.Pages
{
	public partial class Cadastro : BasePage
	{
		Administracao.UCs.Mensagem.mensagens ucMensagem;
		protected void Page_Load(object sender, EventArgs e)
		{
			base.PageLoad();
		}

		public override void CarregaDados()
		{
		}

		protected void btnCadastrar_Click(object sender, EventArgs e)
		{
			try
			{
				ClienteDAL cd = new ClienteDAL();
				DateTime dtNascimento = new DateTime();

				if (txtNome.Text.Equals(string.Empty))
					throw new ApplicationException("O campo NOME é obrigatório!");
				if (txtSobrenome.Text.Equals(string.Empty))
					throw new ApplicationException("O campo SOBRENOME é obrigatório!");
				if (txtDataNascimento.Text.Equals(string.Empty))
					throw new ApplicationException("O campo DATA DE NASCIMENTO é obrigatório!");
				if(!DateTime.TryParse(txtDataNascimento.Text, out dtNascimento))
					throw new ApplicationException("Digite uma data válida no campo DATA DE NASCIMENTO!");
				if (txtEmail.Text.Equals(string.Empty))
					throw new ApplicationException("O campo EMAIL é obrigatório!");
				if (txtSenha.Text.Equals(string.Empty))
					throw new ApplicationException("O campo SENHA é obrigatório!");
				if (txtConfirmarSenha.Text.Equals(string.Empty))
					throw new ApplicationException("O campo CONFIRMAR SENHA é obrigatório!");
				if (!txtSenha.Text.Equals(txtConfirmarSenha.Text))
					throw new ApplicationException("O campo SENHA e o campo CONFIRMAR SENHA não conferem!");

				if(cd.VerificaEmailExiste(txtEmail.Text))
					throw new ApplicationException("O email já existe em nosso sistema!");

				PersistenceLayer.Model.Cliente c = new PersistenceLayer.Model.Cliente();
				c.Nome = txtNome.Text;
				c.Sobrenome = txtSobrenome.Text;
				c.Email = txtEmail.Text;
				c.Senha = Util.Criptografia.EncryptMd5(txtSenha.Text);
				c.DataNascimento = dtNascimento;
				c.Sexo = rdbMasc.Checked ? "M" : "F";
				c.ReceberOfertas = chkReceberOfertas.Checked;
				c.ID = cd.Adicionar(c);

				CreateCookie(CLIENTE.ID, Criptografia.Encriptar(CRIPTO.CHAVE, CRIPTO.VETOR, c.ID.ToString()), 3);

				Response.Redirect("/Cliente/Pages/Home.aspx");
				
			}
			catch (Exception ex)
			{
				ucMensagem = (Administracao.UCs.Mensagem.mensagens)LoadControl(ResolveUrl("/Administracao/UCs/Mensagem/mensagens.ascx"));
				ucMensagem.TipoMensagem = TiposMensagens.Erro;
				ucMensagem.Mensagem = ex.Message;
				placeMensagem.Controls.Add(ucMensagem);
			}
		}
	}
}